package config

import (
	"encoding/json"
	"errors"
	"io/ioutil"
)

var ConfigData *Config

func InitConfig(confFile string){
	d, err := ioutil.ReadFile(confFile)
	if err != nil {
		panic("配置文件不存在")
	}

	 ConfigData = new(Config)
	err = json.Unmarshal(d, ConfigData)
	if err != nil {
		panic(err)
	}
}

func ReloadConfig(confFile string)error{
	d, err := ioutil.ReadFile(confFile)
	if err != nil {
		return errors.New("配置文件读取失败")
	}

	cd := new(Config)
	err = json.Unmarshal(d, cd)
	if err != nil {
		return errors.New("配置文件解析失败")
	}
	ConfigData = cd
	return nil
}

type Config struct {
	 DbPath string `json:"db_path"`
	AppName string `json:"app_name"`
	AppDir          string
	Data            string    `json:"data"`
	Logs            string    `json:"logs"`
	Sock            string    `json:"sock"`
	Bin             string    `json:"bin"`
	 HttpPort    string `json:"http_port"`
	HttpClose    int `json:"http_close"`
	RpcPort  		string 	  `json:"rpc_port"`
	RpcMaster       string    `json:"rpc_master"`
	RpcServer       string    `json:"rpc_server"`
	PackagesBakPath string    `json:"packages_bak_path"`
	Packages        []Package `json:"packages"`
	Ssh             Ssh       `json:"ssh"`
	Conf            string
	Users         []User `json:"users"`
}

type Package struct {
	Path string `json:"path"`
	Name string `json:"name"`
	Type int    `json:"type"`
	Args string `json:"args"`
}
type Ssh struct {
	User string `json:"user"`
	Pwd  string `json:"pwd"`
}

type User struct {
	Name string `json:"name"`
	Passwd string `json:"passwd"`
}

